package cn.schoolwow.quickdao.module.database.dml.option.kit;

import cn.schoolwow.quickdao.domain.database.dml.CheckStrategy;
import cn.schoolwow.quickdao.domain.database.dml.DatabaseManipulation;
import cn.schoolwow.quickdao.domain.database.dml.UpdateType;

public interface DatabaseManipulationOption {
    /**
     * 是否返回自增id
     */
    DatabaseManipulation returnGeneratedKeys(boolean returnGeneratedKeys);

    /**
     * 是否使用批处理
     */
    DatabaseManipulation batch(boolean batch);

    /**
     * 每次最大更新个数
     */
    DatabaseManipulation perBatchCount(int perBatchCount);

    /**
     * 是否只插入/更新部分字段
     */
    DatabaseManipulation partColumn(String... fieldNames);

    /**
     * 排除插入/更新部分字段
     */
    DatabaseManipulation excludeColumn(String... fieldNames);

    /**
     * 指定唯一字段
     */
    DatabaseManipulation uniqueFieldNames(String... uniqueFieldNames);

    /**
     * 指定更新类型
     */
    DatabaseManipulation updateType(UpdateType updateType);

    /**
     * 指定字段检查策略
     */
    DatabaseManipulation checkStrategy(CheckStrategy checkStrategy);

}
